/* sqrt(-1) */
static const fe25519 fe25519_sqrtm1 = {
    1718705420411056, 234908883556509, 2233514472574048, 2117202627021982, 765476049583133
};

/* sqrt(-486664) */
static const fe25519 ed25519_sqrtam2 = {
    1693982333959686, 608509411481997, 2235573344831311, 947681270984193, 266558006233600
};

/* 37095705934669439343138083508754565189542113879843219016388785533085940283555 */
static const fe25519 ed25519_d = {
    929955233495203, 466365720129213, 1662059464998953, 2033849074728123, 1442794654840575
};

/* 2 * d =
 * 16295367250680780974490674513165176452449235426866156013048779062215315747161
 */
static const fe25519 ed25519_d2 = {
    1859910466990425, 932731440258426, 1072319116312658, 1815898335770999, 633789495995903
};

/* A = 486662 */
#define ed25519_A_32 486662
static const fe25519 ed25519_A = {
    ed25519_A_32, 0, 0, 0, 0
};

/* sqrt(ad - 1) with a = -1 (mod p) */
static const fe25519 ed25519_sqrtadm1 = {
    2241493124984347, 425987919032274, 2207028919301688, 1220490630685848, 974799131293748
};

/* 1 / sqrt(a - d) */
static const fe25519 ed25519_invsqrtamd = {
    278908739862762, 821645201101625, 8113234426968, 1777959178193151, 2118520810568447
};

/* 1 - d ^ 2 */
static const fe25519 ed25519_onemsqd = {
    1136626929484150, 1998550399581263, 496427632559748, 118527312129759, 45110755273534
};

/* (d - 1) ^ 2 */
static const fe25519 ed25519_sqdmone = {
    1507062230895904, 1572317787530805, 683053064812840, 317374165784489, 1572899562415810
};
